#include <iostream>
using namespace std;
typedef long long ll;
const int N = 52;
const ll MAX = 1e15;
const ll MIN = -1e15;
int n,k,d;
int a[N];
ll f[N][N];
ll g[N][N];
ll ans=-1e15;
int main()
{
    cin >> n;
    for(int i=1;i<=n;i++) cin >> a[i];
    cin >> k >> d;
    for(int i=1;i<=n;i++)
    {
        f[i][1]=g[i][1]=a[i];
        for(int j=2;j<=min(i,k);j++)
        {
            f[i][j]=MIN;
            g[i][j]=MAX;
            for(int prev=max(i-d,j-1);prev<=i-1;prev++)
            {
                f[i][j]=max(max(f[prev][j-1]*a[i],g[prev][j-1]*a[i]),f[i][j]);
                g[i][j]=min(min(f[prev][j-1]*a[i],g[prev][j-1]*a[i]),g[i][j]);
            }
        }
    }
    for(int i=k;i<=n;i++) ans=max(ans,f[i][k]);
    cout << ans << endl;
    return 0;
}

//dfs只能过80%样例
// #include <iostream>
// using namespace std;
// typedef long long ll;
// const int N = 52;
// int n,k,d;
// int a[N];
// ll ans=-1e15;
// void dfs(int pos,ll res,int count)
// {
//     if(count==k){
//         if(res>ans){
//             ans=res;
//         }
//         return;
//     }
//     for(int j=pos+1;j<=pos+d&&(j+k-count-1)<=n;j++)
//     {
//         dfs(j,res*a[j],count+1);
//     }
// }
// int main() {
//     cin >> n;
//     for(int i=1;i<=n;i++) cin >> a[i];
//     cin >> k >> d;
//     for(int i=1;(i+k-1)<=n;i++)
//     {
//         dfs(i,a[i],1);
//     }
//     cout << ans << endl;
//     return 0;
// }